package com.example.g5project.service;

import com.example.g5project.entity.frontEndObject.FigureData;
import com.example.g5project.entity.frontEndObject.FigureData2;
import com.example.g5project.entity.frontEndObject.PeopleNumberObject;
import com.example.g5project.entity.relation.ConsultInfo;
import com.example.g5project.entity.relation.ConsultantMessages;
import com.example.g5project.entity.relation.HelpMessage;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;

import java.text.ParseException;
import java.util.ArrayList;

/**
 * @author Hu Zirui
 * @version 1.0.0
 * @ClassName ConsultantService.java
 * @Description TODO
 * @createTime 2022年03月23日 13:18:00
 */
public interface AdministratortService {

    ArrayList<PeopleNumberObject> getInfoByMonth(int year, int month) throws ParseException;                            // 给定月份，返回日期、咨询师数量、督导数量

    ArrayList<String> getConsultantInfoByDate(String date);                                                             // 给定日期，返回咨询师列表

    ArrayList<String> getSupervisorInfoByDate(String date);                                                             // 给定日期，返回督导列表

    void addConsultantIntoScheduleByName(String name, String date);                                                     // 根据姓名添加一个咨询师到排班表中

    void addSupervisorIntoScheduleByName(String name, String date);                                                     // 根据姓名添加一个督导到排班表中

    void deleteConsultantFromScheduleByName(String name, String date);                                                  // 根据姓名从排班表中指定日期删除咨询师

    void deleteSupervisorFromScheduleByName(String name, String date);                                                  // 根据姓名从排班表中指定日期删除督导

    void deleteSupervisorFromScheduleByNameAll(String name);                                                            // 根据姓名从排班表中删除督导所有日期的排班

    void deleteConsultantFromScheduleByNameAll(String name);                                                            // 根据姓名从排班表中删除咨询师所有日期的排班

    void bindConsultantAndSupervisor(int consultant_id, int supervisor_id);                                             // 根据id绑定督导和咨询师

    ArrayList<String> getSupervisorInfoByName(String name);                                                             // 根据姓名获取该督导所有的排班日期

    ArrayList<String> getConsultantInfoByName(String name);                                                             // 根据姓名获取该咨询师所有的排班日期

    Integer getConsultantMessageID(Integer consultant_id, Integer client_id, String consult_date);                      // 根据日期，咨询师id，用户id获取某一次聊天记录ID

    HSSFWorkbook ExportRecordToExcel(ArrayList<ConsultantMessages> consult_message_id);                                 // 根据某次消息聊天ID, 导出消息记录

    ArrayList<ConsultantMessages> getMessageContentByID(Integer consult_message_id);                                    // 根据某次消息聊天ID，获取聊天内容

    ArrayList<HelpMessage> getMessageHelpContentByID(Integer consult_message_id);                                       // 根据某次消息聊天ID，获取求助的聊天内容

    ArrayList<String> getBindRelationship(Integer consultant_id);                                                       // 根据咨询师ID获取绑定的督导名字

    void deleteConsultantFromMessageByIDAll(Integer consultant_id);                                                     // 从消息记录里删除咨询师

    void deleteConsultantFromBindByIDAll(Integer consultant_id);                                                        // 从绑定关系里删除咨询师

    void deleteSupervisorFromBindByIDAll(Integer supervisor_id);                                                        // 从绑定关系里删除督导

    void addConsultMessage(ConsultInfo consultInfo);

    ArrayList<ConsultInfo> getAllConsultMessage();

    ConsultInfo getConsultMessage(String name, String date);

    void addConsultMessageAll(ConsultantMessages consultantMessages);

    ArrayList<FigureData> getAllConsultNumberLimitK(String month, Integer k);

    ArrayList<FigureData2> gettodayConsultNumberLimitK(String month, Integer day, Integer k);
}
